import Vue from 'vue'
import axios from 'axios'
import { getToken, removeToken } from '@/utils/token'
// 导入message
// 因为这里是js所以我们无法通过this(得到undefined),调用vue的方法,可以通过访问vue原型或者组件提供的单独引入调用message
import { Message } from 'element-ui'
// 跳转的路由手动引入
import router from '../router'
axios.defaults.baseURL = process.env.VUE_APP_BASEURL

// 我们这个项目后台要求携带上cookies,上网百度就好
axios.defaults.withCredentials = true

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // console.log(config)
  // 在发送请求之前做些什么
  const token = getToken()
  if (token) {
    config.headers.token = token
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // token过期处理
  // console.log(response) //查看请求回来的数据data.code 是206就是过期
  if (response.data.code === 206) {
    //  提示token过期
    // 我们也可以通过vue原型调用message  Vue.prototype.$message.error('token过期')
    Message.error('token过期了')
    // 删除token
    removeToken()
    // 跳转页面
    router.push('login')
  }
  // 对响应数据做点什么
  return response.data
}, function (error) {
// 对响应错误做点什么
  return Promise.reject(error)
})

Vue.prototype.$axios = axios
